﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.Specialized;
using Inmobiliaria.Presenters.ViewInterfaces;
using Inmobiliaria.UCControllers;
using Inmobiliaria.Base;
using Inmobiliaria.Services.Core.DTO;

namespace Inmobiliaria.Presenters.WFPresenters
{
    public class RegistroInmueblePresenter : Presenter
    {
        private IViewRegistroInmueble viewRegistroInmueble;

        public RegistroInmueblePresenter(IViewRegistroInmueble view)
            : base(view)
        {
            viewRegistroInmueble = view;

        }
        public override void InitView(NameValueCollection queryString)
        {
            viewRegistroInmueble.TipoInmueble = RegistroInmuebleUC.CargarCombo();
            viewRegistroInmueble.Provincias = RegistroInmuebleUC.CargarComboProvincias();
            string[] Habitacion = ValoresConstantes.Numeros;
            viewRegistroInmueble.Habitaciones = Habitacion;
            string[] Baño = ValoresConstantes.Numeros;
            viewRegistroInmueble.Baños = Baño;
            string[] Transaccion = ValoresConstantes.TipoTransaccion;
            viewRegistroInmueble.Transacciones = Transaccion;

        }

        public void CargarComboLocalidades()
        {
            RegistroInmuebleUC _registroInmueble = new RegistroInmuebleUC();
            int id = viewRegistroInmueble.Provincia;
            viewRegistroInmueble.Localidades = _registroInmueble.CargarComboLocalidades(id);

        }
        public void CargarComboBarrio()
        {
            RegistroInmuebleUC _registroInmueble = new RegistroInmuebleUC();
            int id = viewRegistroInmueble.Localidad;
            viewRegistroInmueble.Barrios = _registroInmueble.CargarComboBarrios(id);
        }
        public void Registrar()
        {
            RegistroInmuebleUC _registroInmueble = new RegistroInmuebleUC();
            _registroInmueble.RegistrarPlanillaInmueble(GetPlanilla());
        }


        public DtoPlanillaInmueble GetPlanilla()
        {
            DtoPlanillaInmueble planilla = new DtoPlanillaInmueble();
            /////Persona
            planilla.Vendedor = "PARTICULAR";
            planilla.Apellido = viewRegistroInmueble.Apellido;
            planilla.Nombre = viewRegistroInmueble.Nombre;
            planilla.CodCelular = viewRegistroInmueble.CodCelular;
            planilla.Celular = viewRegistroInmueble.NumeroCelular;
            planilla.CodTelefono = viewRegistroInmueble.CodTelefono;
            planilla.Telefono = viewRegistroInmueble.NumeroTelefono;
            planilla.Email = viewRegistroInmueble.Email;
            planilla.Email2 = viewRegistroInmueble.Email2;

            /////Inmueble
            planilla.TipoInmueble = viewRegistroInmueble.tipoInmueble;
            planilla.Transaccion = viewRegistroInmueble.Transaccion;
            planilla.Provincia = viewRegistroInmueble.Provincia;
            planilla.Localidad = viewRegistroInmueble.Localidad;
            planilla.Barrio = viewRegistroInmueble.Barrio;
            planilla.Calle = viewRegistroInmueble.Calle;
            planilla.Altura = viewRegistroInmueble.Altura;
            planilla.Lote = viewRegistroInmueble.Lote;
            planilla.SuperficieCubierta = viewRegistroInmueble.SuperficieCubierta;
            planilla.Habitaciones = viewRegistroInmueble.Habitacion;
            planilla.Baños = viewRegistroInmueble.Baño;
            planilla.Agua = viewRegistroInmueble.Agua;
            planilla.Asfalto = viewRegistroInmueble.Asfalto;
            planilla.Balcon = viewRegistroInmueble.Balcon;
            planilla.Cloacas = viewRegistroInmueble.Cloacas;
            planilla.Cocina = viewRegistroInmueble.Cocina;
            planilla.Comedor = viewRegistroInmueble.Comedor;
            planilla.Descripcion = viewRegistroInmueble.Descripcion;
            planilla.Gas = viewRegistroInmueble.Gas;
            planilla.Jardin = viewRegistroInmueble.Jardin;
            planilla.Living = viewRegistroInmueble.Living;
            planilla.Luz = viewRegistroInmueble.Luz;
            //planilla.Parrilla = viewRegistroInmueble.Parrilla;
            planilla.Patio = viewRegistroInmueble.Patio;
            planilla.Quincho = viewRegistroInmueble.Quincho;
            planilla.Telefono = viewRegistroInmueble.TelefonoInmueble;
            planilla.Terraza = viewRegistroInmueble.Terraza;
            Validar(planilla);
            return planilla;
        }
        private void Validar(DtoPlanillaInmueble planilla)
        {
            StringBuilder errores = new StringBuilder();


            if (String.IsNullOrEmpty(planilla.Apellido))
            {
                errores.AppendLine(Recursos.Persona.ApellidoRequerido);
            }

            if (String.IsNullOrEmpty(planilla.Nombre))
            {
                errores.AppendLine(Recursos.Persona.NombreRequerido);
            }

            if (planilla.CodTelefono.Length > 0 && planilla.CodTelefono[0].ToString() == "0")
            {
                errores.AppendLine(Recursos.Persona.CodigoAreaTelefono);

            }
            if (planilla.CodTelefono.Length < 2 && planilla.CodTelefono.Length != 0)
            {
                errores.AppendLine(Recursos.Persona.CodigoAreaTelefono1);

            }

            if (planilla.CodTelefono.Length != 0 && planilla.Telefono.Length == 0)
            {
                errores.AppendLine(Recursos.Persona.TelefonoErroneo);

            }

            if (planilla.CodCelular.Length > 0 && planilla.CodCelular[0].ToString() == "0")
            {
                errores.AppendLine(Recursos.Persona.CodigoAreaCelular);

            }
            if (planilla.CodCelular.Length != 0 && planilla.Celular.Length != 0 && planilla.CodCelular.Length + planilla.Celular.Length != 10)
            {
                errores.AppendLine(Recursos.Persona.NumeroCelularErroneo);
            }

            if (planilla.CodCelular.Length < 2 && planilla.Celular.Length != 0)
            {
                errores.AppendLine(Recursos.Persona.CodigoAreaCelular1);
            }

            if (planilla.CodCelular.Length != 0 && planilla.Celular.Length == 0)
            {
                errores.AppendLine(Recursos.Persona.NumeroCelularErroneo1);
            }

            if (planilla.Email != planilla.Email2)
            {
                errores.AppendLine(Recursos.Persona.Email);
            }

            if (String.IsNullOrEmpty(planilla.Calle))
            {
                errores.AppendLine(Recursos.Planilla.CalleRequerido);
            }

            if (String.IsNullOrEmpty(planilla.Altura))
            {
                errores.AppendLine(Recursos.Planilla.AlturaRequerido);
            }
            if (String.IsNullOrEmpty(planilla.Lote))
            {
                errores.AppendLine(Recursos.Planilla.LoteRequerido);
            }

            if (!String.IsNullOrEmpty(errores.ToString()))
            {
                throw new ApplicationException(errores.ToString());
            }
        }

    }

}

